/**********************************************************************
 *** 名称 ：GameCore.h
 *** 描述 ：GameCore类的定义。华容道程序中的核心模块。负责处理消息循环，
 ***     数据计算，及合理调用GUI模块和Audio模块。
 **********************************************************************/
#ifndef _GAMECORE_H_
#define _GAMECORE_H_

#include <fstream>
#include <sstream>
#include <cmath>
#include "GameGUI.h"
#include "GameAudio.h"

using namespace std;

class GameCore{
private:
	GameGUI *myGameGUI;                             // 用于向用户提供图形界面
	GameAudio *myAudioPlayer;                       // 用于向用户提供听觉享受

	int level;                                      // 当前玩家进行的关卡
	string levelName;                               // 关卡名称
	int currentMap[5][4];                           // 实时地图信息
	vector<RoleInfo> rolesInfo;                     // 实时角色信息，主要是便于绘图
	int steps;                                      // 当前关已走步数
	bool closeSound;                                // 声音控制

	void loadMapFromFile(int playLevel);            // 地图加载函数
	bool mouseClicked(bool &showHelp, int &x, int &y, int &select); // 处理鼠标点击事件
	int isThereARole(int &x, int &y);               // 判断鼠标点击位置是否有角色
	void controlMovement(int &role, int x, int y);  // 控制角色的移动
	void resetAll();                                 // 重置
	void changeSoundState(int &select);              // 声音控制

public:
	GameCore();
	~GameCore();

	void runGame();                                 // 启动游戏主循环
};

#endif
